﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using BussinessLogicTecnoPez.Produccion.Enfermedades_y_control_de_estanques;
using Tecnopez.Globals;
using BussinessLogicTecnoPez;

public partial class Modules_EnfermedadesControlEstanque_ABMTiposPuertos : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack == false)
        {
            SetMode(PageMode.ListMode);
        }

        InicializarGrilla();

        cmdEliminar.OnClientClick = "return confirm('Esta seguro de eliminar el registro?');";

        GenericMasterPage master = (GenericMasterPage)this.Master;
        master.Imagen = "../Styles/Icons/ports.png";
        master.Titulo = "Gestión de tipos de puertos";
        cargarGrilla();
        _lblError.Text = "";
    }

    private void InicializarGrilla()
    {
        grdTiposPuertos.setupGrid(typeof(TipoPuerto), cargarGrilla, true, true, this.ViewState);
    }

    private void cargarGrilla()
    {
        TipoPuerto.getManager.ClearFilters();
        TipoPuerto.getManager.ClearOrders();
        TipoPuerto.getManager.AddFilter("Descripcion", GenericManager<TipoPuerto>.filterOperator.Like, "%" + txtBuscarDescripcion.Text.Trim() + "%");

        if (ViewState[grdTiposPuertos.PageDataViewOrderKey] == null)
        { 
            TipoPuerto.getManager.AddOrder("IdTipoPuerto", GenericManager<TipoPuerto>.Order.orderDirection.DESC);
        }
        else
        {
            TipoPuerto.getManager.AddOrder(ViewState[grdTiposPuertos.PageDataViewOrderKey].ToString(), (GenericManager<TipoPuerto>.Order.orderDirection)ViewState[grdTiposPuertos.PageDataViewOrdenDireccionKey]);
        }

        List<TipoPuerto> lista = new List<TipoPuerto>();
        lista = TipoPuerto.getManager.GetFilter();
        grdTiposPuertos.DataSource = lista;
        grdTiposPuertos.DataBind();

    }

    private PageMode getMode()
    {
        if (ViewState["PageMode"] == null)
            return PageMode.ModeNotFound;
        return (PageMode)ViewState["PageMode"];
    }

    private void SetMode(PageMode mode)
    {
        ViewState["PageMode"] = mode;
        switch (mode)
        {
            case PageMode.ListMode:
                mvABM.ActiveStepIndex = 0;
                break;
            case PageMode.NewMode:
                mvABM.ActiveStepIndex = 1;
                txtID.ReadOnly = true;
                txtDescripcion.ReadOnly = false;
                cmdAceptar.Visible = true;
                cmdCancelar.Enabled = true;
                cmdEditar.Enabled = false;
                cmdEliminar.Enabled = false;
                break;
            case PageMode.EditMode:
                mvABM.ActiveStepIndex = 1;
                txtID.ReadOnly = true;
                txtDescripcion.ReadOnly = false;
                cmdAceptar.Visible = true;
                cmdCancelar.Enabled = true;
                cmdEditar.Enabled = false;
                cmdEliminar.Enabled = false;
                break;
            case PageMode.ViewMode:
                mvABM.ActiveStepIndex = 1;
                txtID.ReadOnly = true;
                txtDescripcion.ReadOnly = true;
                cmdAceptar.Visible = false;
                cmdCancelar.Enabled = true;
                cmdEditar.Enabled = true;
                cmdEliminar.Enabled = true;
                break;
        }

    }


    protected void  grdTiposPuertos_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "ver")
        {
            int IdTipoPuerto = int.Parse(grdTiposPuertos.DataKeys[System.Convert.ToInt32(e.CommandArgument)].Value.ToString());
            TipoPuerto.getManager.ClearFilters();
            TipoPuerto.getManager.AddFilter("IDTIPOPUERTO", GenericManager<TipoPuerto>.filterOperator.Equals, IdTipoPuerto);
            TipoPuerto objTipoPuerto = TipoPuerto.getManager.GetOne();
            txtID.Text = objTipoPuerto.IdTipoPuerto.ToString();
            txtDescripcion.Text = objTipoPuerto.Descripcion.Trim();

            SetMode(PageMode.ViewMode);
        }
    }
    
    protected void  cmdBuscar_Click(object sender, EventArgs e)
    {

    }
    
    protected void  cmdNuevo_Click(object sender, EventArgs e)
    {
        SetMode(PageMode.NewMode);
        txtID.Text = "";
        txtDescripcion.Text = "";
    }
    
    protected void  cmdEditar_Click(object sender, EventArgs e)
    {
        SetMode(PageMode.EditMode);
    }

    protected void  cmdEliminar_Click(object sender, EventArgs e)
    {
        try
        {
            TipoPuerto objTipoPuerto = new TipoPuerto();
            objTipoPuerto.IdTipoPuerto = int.Parse(this.txtID.Text.Trim());
            if (TipoPuerto.getManager.Delete(objTipoPuerto) < 1)
            {
                throw TipoPuerto.getManager.GeneratedException;
            }

            SetMode(PageMode.ListMode);
            cargarGrilla();
        }
        catch (Exception ex)
        {
            _lblError.Text = ex.Message;
        }      
    }

    protected void  cmdAceptar_Click(object sender, EventArgs e)
    {
        try
        {
            TipoPuerto objTipoPuerto = new TipoPuerto();

            objTipoPuerto.Descripcion = txtDescripcion.Text.Trim();

            if (getMode() == PageMode.NewMode)
            {
                if (TipoPuerto.getManager.Insert(objTipoPuerto) != true)
                {
                    throw TipoPuerto.getManager.GeneratedException;
                }
                SetMode(PageMode.ListMode);
                cargarGrilla();
            }
            else
            {
                objTipoPuerto.IdTipoPuerto= int.Parse(txtID.Text.Trim());
                if (TipoPuerto.getManager.Update(objTipoPuerto) != true)
                {
                    throw TipoPuerto.getManager.GeneratedException;
                }
                SetMode(PageMode.ViewMode);
            }
        }
        catch (Exception exc)
        {
            _lblError.Text = "error: No se pudo realizar la operación";
            Functions.LogError(exc);
        }
    }

    protected void  cmdCancelar_Click(object sender, EventArgs e)
    {
        SetMode(PageMode.ListMode);
    }
}
